// lib/screens/auth/login_screen.dart
import 'package:flutter/material.dart';
import '../../routes/app_routes.dart'; // 导入路由
import '../../api/auth_api.dart'; // **导入 AuthApi**
import '../../models/response.dart'; // **导入 ResponseSuccess**
import '../../models/user.dart'; // **导入 User 模型**

class LoginScreen extends StatefulWidget {
  const LoginScreen({super.key});

  @override
  State<LoginScreen> createState() => _LoginScreenState();
}

class _LoginScreenState extends State<LoginScreen> {
  final TextEditingController _usernameController = TextEditingController();
  final TextEditingController _passwordController = TextEditingController();
  final AuthApi _authApi = AuthApi(); // **实例化 AuthApi**
  bool _isLoading = false; // **新增：加载状态管理**

  Future<void> _login() async {
    if (_usernameController.text.isEmpty || _passwordController.text.isEmpty) {
      _showSnackBar('用户名和密码不能为空！');
      return;
    }

    setState(() {
      _isLoading = true; // **开始加载，显示加载指示器**
    });

    try {
      // **调用 AuthApi 的登录方法**
      final ResponseSuccess<User> response = await _authApi.login(
        username: _usernameController.text,
        password: _passwordController.text,
      );

      // 根据后端返回的 code 进行判断
      if (response.code == 1000) { // **根据你的 Postman 响应，成功代码是 1000**
        _showSnackBar('登录成功！');
        // 登录成功后导航到主页，并移除所有之前的路由栈
        Navigator.of(context).pushReplacementNamed(AppRoutes.mainScreen);
      } else {
        // 登录失败，显示后端返回的错误信息
        _showSnackBar('登录失败: ${response.msg}');
      }
    } catch (e) {
      // 捕获 API 调用中可能抛出的异常 (例如网络错误、自定义抛出的错误信息等)
      _showSnackBar('登录异常: $e');
    } finally {
      setState(() {
        _isLoading = false; // **无论成功或失败，结束加载**
      });
    }
  }

  // 辅助方法，用于显示 SnackBar 消息
  void _showSnackBar(String message) {
    ScaffoldMessenger.of(context).showSnackBar(
      SnackBar(content: Text(message)),
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('登录')),
      body: _isLoading
          ? const Center(child: CircularProgressIndicator()) // **显示加载指示器**
          : Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            TextField(
              controller: _usernameController,
              decoration: const InputDecoration(labelText: '用户名/手机号'),
            ),
            const SizedBox(height: 16),
            TextField(
              controller: _passwordController,
              decoration: const InputDecoration(labelText: '密码'),
              obscureText: true,
            ),
            const SizedBox(height: 32),
            SizedBox( // 使用 SizedBox 确保按钮宽度占满
              width: double.infinity,
              child: ElevatedButton(
                onPressed: _login, // **调用实际的登录方法**
                child: const Text('登录'),
              ),
            ),
            const SizedBox(height: 16),
            TextButton(
              onPressed: () {
                Navigator.of(context).pushNamed(AppRoutes.signupScreen);
              },
              child: const Text('没有账号？去注册'),
            ),
            // 你之前有短信登录的占位符，如果你需要可以加上去
            // TextButton(
            //   onPressed: _loginSMS, // 假设你有这个方法
            //   child: const Text('短信登录'),
            // ),
          ],
        ),
      ),
    );
  }
}